<template>
  <div id="vmsimulatedDATA" class="productBox">

    <div>
      text值为：{{getText}}
      <button type="button" @click="setText">修改text值</button>
    </div>

    <div>
      groups值为：{{getGroups}}
      <button type="button" @click="setGroup(getGroups.length + 1)">修改groups值</button>
    </div>
    <div>
      http数据：{{dataStatus}}
      <!--<button type="button" @click="getHttpData">获取github数据</button>-->
    </div>


    <div class="productConten">
      <div class="product-delcom" v-for="(ProductItem,n) in simulatedDATA.specifications">
        <p>{{ProductItem.name}}</p>
        <ul class="product-footerlist clearfix">
          <li v-for="(oItem,index) in ProductItem.item" @click="specificationBtn(oItem.name,n,$event,index)"
              :class="[oItem.isShow?'':'noneActive',subIndex[n] == index?'productActive':'']">{{oItem.name}}
          </li>
        </ul>
      </div>
    </div>
    <div class="product-footer">
      <a href="javascript:">立即购买</a>
    </div>
  </div>
</template>

<script>

  import {mapGetters, mapActions} from 'vuex'

  export default {
    name: "vmsimulatedDATA",
    data() {
      return {
        dataStatus: '未获取',
        simulatedDATA: { //模拟后台返回的数据 多规格
          "difference": [
            { //所有的规格可能情况都在这个数组里
              "id": "19",
              "price": "200.00",
              "stock": "19",
              "difference": "100,白色"
            },
            {
              "id": "20",
              "price": "300.00",
              "stock": "29",
              "difference": "200,白色"
            },
            {
              "id": "21",
              "price": "300.00",
              "stock": "10",
              "difference": "100,黑丝"
            },
            {
              "id": "22",
              "price": "300.00",
              "stock": "0",
              "difference": "200,黑丝"
            },
            {
              "id": "23",
              "price": "500.00",
              "stock": "48",
              "difference": "100,绿色"
            },
            {
              "id": "24",
              "price": "500.00",
              "stock": "0",
              "difference": "200,绿色"
            },
            {
              "id": "25",
              "price": "900.00",
              "stock": "0",
              "difference": "300,黑丝"
            },
            {
              "id": "26",
              "price": "900.00",
              "stock": "0",
              "difference": "300,白色"
            },
            {
              "id": "27",
              "price": "900.00",
              "stock": "1",
              "difference": "300,绿色"
            }
          ],
          "specifications": [
            { //这里是要被渲染字段
              "name": "尺寸",
              "item": [
                {
                  "name": "100",
                },
                {
                  "name": "200",
                },
                {
                  "name": "300"
                }
              ]
            },
            {
              "name": "颜色",
              "item": [
                {
                  "name": "白色",
                },
                {
                  "name": "黑丝",
                },
                {
                  "name": "绿色",
                }
              ]
            }
          ]
        },
        selectArr: [], //存放被选中的值
        shopItemInfo: {}, //存放要和选中的值进行匹配的数据
        subIndex: [], //是否选中 因为不确定是多规格还是单规格，所以这里定义数组来判断
      }
    },
    computed: {
      // 使用对象展开运算符将 getter 混入 computed 对象中
      ...mapGetters([
        'getText',
        'getGroups',
      ])
    },
    created() {
      var self = this;
      for (var i in self.simulatedDATA.difference) {
        self.shopItemInfo[self.simulatedDATA.difference[i].difference] = self.simulatedDATA.difference[i]; //修改数据结构格式，改成键值对的方式，以方便和选中之后的值进行匹配
      }
      self.checkItem();
    },
    methods: {
      ...mapActions([
        'setText', // 将 `this.setText()` 映射为 `this.$store.dispatch('setText')`
        'setGroup',
      ]),
      //定义空对象 存放产品ID，价格，库存等
      specificationBtn(item, n, event, index) {
        var self = this;
        console.log(self.selectArr)
        console.log(self.selectArr[n])
        console.log(item)
        if ( self.selectArr[n] != item ) {
          self.selectArr[n] = item;
          self.subIndex[n] = index;
        } else {
          self.selectArr[n] = "";
          self.subIndex[n] = -1; //去掉选中的颜色
        }
        self.checkItem();
      },
      checkItem() {
        var self = this;
        var option = self.simulatedDATA.specifications;
        var result = [];  //定义数组存储被选中的值
        for (var i in option) {
          result[i] = self.selectArr[i] ? self.selectArr[i] : '';
        }
        for (var i in option) {
          var last = result[i];  //把选中的值存放到字符串last去
          for (var k in option[i].item) {
            result[i] = option[i].item[k].name; //赋值，存在直接覆盖，不存在往里面添加name值
            console.log('这里:', JSON.parse(JSON.stringify(result)))
            option[i].item[k].isShow = self.isMay(result); //在数据里面添加字段isShow来判断是否可以选择
          }
          result[i] = last; //还原，目的是记录点下去那个值，避免下一次执行循环时避免被覆盖

        }
        self.$forceUpdate(); //重绘
      },
      isMay(result) {
        for (var i in result) {
          if ( result[i] == '' ) {
            return true; //如果数组里有为空的值，那直接返回true
          }
        }
        return this.shopItemInfo[result] && Number(this.shopItemInfo[result].stock) !== 0 // 匹配选中的数据的库存，若不为空返回true反之返回false
      }

    }
  }
</script>

<style scoped>
  .productBox {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background-color: #fff;
  }

  .productConten {
    margin-bottom: 1rem;
  }

  .product-delcom {
    padding: 0.24rem 7%;
    color: #323232;
    font-size: 0.26rem;
    border-bottom: 1px solid #EEEEEE;
  }

  .product-footerlist {
    margin-top: 0.1rem;
  }

  .product-footerlist li {
    border: 1px solid #606060;
    border-radius: 0.08rem;
    color: #606060;
    text-align: center;
    padding: 0.04rem 0.16rem;
    float: left;
    margin-right: 0.16rem;
    min-width: 0.96rem;
    margin-bottom: 0.16rem;
  }

  .product-footerlist li.productActive {
    background-color: #1A1A29;
    color: #fff;
    border: 1px solid #1A1A29;
  }

  .product-footerlist li.noneActive {
    background-color: #ccc;
    opacity: 0.4;
    color: #000;
    pointer-events: none;
  }

  .product-footer {
    display: -webkit-box;
    display: -webkit-flex;
    display: flex;
    -webkit-flex: 1;
    -webkit-box-flex: 1;
    flex: 1;
    background-color: #1A1A29;
    line-height: 1rem;
    text-align: center;
  }

  .product-footer a {
    -webkit-flex: 1;
    -webkit-box-flex: 1;
    flex: 1;
    color: #fff;
    font-size: 0.3rem;
    text-decoration: none;
  }
</style>
